package servlets;

import java.io.IOException;
import java.sql.Date;
import java.sql.SQLException;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import excepcion.DAOExcepcion;
import negocio.GestionCategoria;
import negocio.GestionPersona;
import modelo.Categoria;
import modelo.Persona;
import modelo.Usuario;

/**
 * Servlet implementation class RegistrarCategoria
 */
@WebServlet("/RegistrarCategoria")
public class RegistrarCategoria extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public RegistrarCategoria() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		request.setAttribute("MENSAJE", "ERROR: Pagina No Encontrada");
		RequestDispatcher rd = request.getRequestDispatcher("/error.jsp");
		rd.forward(request, response);
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		/*
		 * private int idcategoria;
    private String nombre;
    private String descripcion;
    private Categoria categoria;

NombreCategoria
descripcion_categoria
cbocategoria

DB
int  idcategoria
String nombre
String descripcion
int categoria
		 */
		
		Boolean xGrabar=true;
		String mensaje= null;
		String mensajeNoGrabo="Error con el valor ingresado en o campo falta llenar ";
	
		String NombreCategoria = request.getParameter("NombreCategoria");
		String descripcion_categoria=request.getParameter("descripcion_categoria");
		String cbocategoria=request.getParameter("cbocategoria");
		
		
		if (NombreCategoria.equalsIgnoreCase("")){
			mensajeNoGrabo = mensajeNoGrabo + (xGrabar?"":", ") + "Nombre"; xGrabar=false;}
		if (descripcion_categoria.equalsIgnoreCase("")){
			mensajeNoGrabo = mensajeNoGrabo + (xGrabar?"":", ") + "Descripcion"; xGrabar=false;}
		
	
		Categoria categoria= new Categoria();
		if (xGrabar){
			categoria.setNombre(request.getParameter("NombreCategoria"));
			System.out.println("El Nombre de la categoria es --> " + request.getParameter("NombreCategoria"));
			categoria.setDescripcion(request.getParameter("descripcion_categoria"));
			System.out.println("La descripcion es --> " + request.getParameter("descripcion_categoria"));
			//categoria.setCategoria(Integer.parseInt(request.getParameter("cbocategoria")));
			Categoria categoria_alt = new Categoria();
			System.out.println("La Categoria relacionada es --> " + request.getParameter("cbocategoria"));
			if(!request.getParameter("cbocategoria").equals("")) {
				categoria_alt.setIdcategoria(Integer.parseInt(request.getParameter("cbocategoria")));
			}
			
			categoria.setCategoria(categoria_alt);
			
			
			Usuario usuario = new Usuario();
			usuario.setUser("apizarro");
		}
		GestionCategoria negCat = new GestionCategoria();
		
		try {
			if (xGrabar){
				mensaje = negCat.insertar(categoria);
				System.out.println("Mensaje : " + mensaje);
				request.setAttribute("MENSAJE", "Datos grabados correctamente");
				
				RequestDispatcher rd = request.getRequestDispatcher("/prototipocategorias.jsp");
			rd.forward(request, response);
			}
			
		} catch (DAOExcepcion e1) {
			System.err.print(e1);
			if (((String)e1.getMessage()).equals("Duplicate entry 'Juegos123' for key 'nombre_UNIQUE'")){
				System.out.println("El nombre de categoria ya existe");
				request.setAttribute("MENSAJE", "El nombre de categoria ya existe");
			} else if (((String)e1.getMessage()).equals("Duplicate entry 'Electronica' for key 'nombre_UNIQUE'")){
				System.out.println("El nombre de categoria ya existe");
				request.setAttribute("MENSAJE", "El nombre de categoria ya existe");
			}else if (((String)e1.getMessage()).equals("Column 'nombre' cannot be null")){
					System.out.println("Debe llenar el campo nombre");
					request.setAttribute("MENSAJE", "Debe llenar el campo nombre");
			} else if (((String)e1.getMessage()).equals("Column 'descripcion' cannot be null")){
				System.out.println("Debe llenar el campo descripcion");
				request.setAttribute("MENSAJE", "Debe llenar el campo descripcion");
			} else if (((String)e1.getMessage()).equals("Duplicate entry 'Servicios' for key 'nombre_UNIQUE'")){
			System.out.println("Debe llenar el campo descripcion");
			request.setAttribute("MENSAJE", "Informacion duplicada, trata ingresar una categoria existente");
		}
			//request.setAttribute("MENSAJE", );
			
		RequestDispatcher rd = request.getRequestDispatcher("/prototipocategorias.jsp");
			rd.forward(request, response);
		}finally{
			
			if (!xGrabar){
				request.setAttribute("MENSAJE", mensajeNoGrabo);
				
				RequestDispatcher rd = request.getRequestDispatcher("/prototipocategorias.jsp");
				rd.forward(request, response);
			}
		}

	}
}
